home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 051-060 / amok59 / menu / test.mod < prev    next >
Text File  |  1993-11-04  |  4KB  |  198 lines

  1. MODULE Test;
  2.  
  3. IMPORT D := Display,
  4.        m := Menu,
  5.        I := Intuition,
  6.        e := Exec;
  7.  
  8. VAR
  9.   w: D.WindowPtr;
  10.   menu: I.MenuPtr;
  11.   msg: I.IntuiMessagePtr;
  12.   Msg: I.IntuiMessage;
  13.   menunum: INTEGER;
  14.   menuname,itemname: ARRAY 20 OF CHAR;
  15.   quit: BOOLEAN;
  16.   item: I.MenuItemPtr;
  17.  
  18. BEGIN
  19.  
  20.   NEW(w);
  21.  
  22.   IF (w#NIL) AND D.OpenWindow(w,"Test",20,20,600,180,NIL) THEN
  23.  
  24.     D.Jam1(w); D.FrontPen(w,1); D.CursorOn(w);
  25.     D.Write(w,"Spiel mit dem Menü!"); D.WriteLn(w);
  26.  
  27.     m.StartMenu(w.window);
  28.  
  29.     m.NewMenu("Project");
  30.     m.NewItem ("Open..."    ,"O");
  31.     m.Seperator;
  32.     m.NewItem ("Save"       ,"S");
  33.     m.NewItem ("Save As..." ,"V");
  34.     m.Seperator;
  35.     m.NewItem2("Quit"       ,"Q");
  36.     m.NewItem2("About"      ,"A");
  37.     m.Seperator;
  38.     m.NewItemChecked("Create Icons",0X,TRUE);
  39.  
  40.     m.NewMenu("Edit");
  41.  
  42.     m.NewItem("Insert","B");
  43.     m.NewItem("Delete","E");
  44.     m.NewItem("Copy","Y");
  45.     m.NewItem("Move","M");
  46.     m.NewItem("UnMark","D");
  47.     m.Seperator;
  48.     m.NewItemChecked("Active","A",FALSE);
  49.  
  50.     m.NewMenu("Streß");
  51.  
  52.     m.NewItem("Dieses",0X);
  53.     m.NewItem("Menü",0X);
  54.     m.NewItem("hat",0X);
  55.     m.NewItem("sehr",0X);
  56.     m.NewItem("viele",0X);
  57.     m.NewItem("Items,",0X);
  58.     m.NewItem("so",0X);
  59.     m.NewItem("daß",0X);
  60.     m.NewItem("sie",0X);
  61.     m.NewItem("im",0X);
  62.     m.NewItem("Normal-",0X);
  63.     m.NewItem("fall",0X);
  64.     m.NewItem("nicht",0X);
  65.     m.NewItem("alle",0X);
  66.     m.NewItem("auf",0X);
  67.     m.NewItem("den",0X);
  68.     m.NewItem("kleinen",0X);
  69.     m.NewItem("Bild-",0X);
  70.     m.NewItem("schirm",0X);
  71.     m.NewItem2("passen","!!!");
  72.     m.NewItem("Dieses",0X);
  73.     m.NewItem("Problem",0X);
  74.     m.NewItem("nimmt",0X);
  75.     m.NewItem("einem",0X);
  76.     m.NewItem("Menu.mod",0X);
  77.     m.NewItem2("ab","!!!");
  78.  
  79.     menu := m.EndMenu();
  80.  
  81.     IF I.SetMenuStrip(w.window,menu^) THEN END;
  82.  
  83.     IF I.int.libNode.version>=36 THEN
  84.  
  85.       IF NOT I.ModifyIDCMP(w.window,LONGSET{I.closeWindow,I.vanillaKey,I.menuPick}) THEN
  86.         D.Write(w,"Sorry, kein Speicher!");
  87.         HALT(20);
  88.       END;
  89.  
  90.     ELSE
  91.  
  92.       I.OldModifyIDCMP(w.window,LONGSET{I.closeWindow,I.menuPick,I.vanillaKey});
  93.  
  94.     END;
  95.  
  96.     quit := FALSE;
  97.  
  98.     WHILE ~quit DO
  99.  
  100.       LOOP
  101.         msg := e.GetMsg(w.window.userPort);
  102.         IF msg#NIL THEN EXIT END;
  103.         e.WaitPort(w.window.userPort);
  104.       END;
  105.  
  106.       Msg := msg^; e.ReplyMsg(msg);
  107.  
  108.       IF I.menuPick IN Msg.class THEN
  109.  
  110.         menunum := Msg.code;
  111.         WHILE menunum#I.menuNull DO
  112.  
  113.           item := I.ItemAddress(menu^,menunum);
  114.  
  115.           CASE I.MenuNum(menunum) OF
  116.  
  117.           | 0:
  118.  
  119.             menuname := "Project";
  120.  
  121.             CASE I.ItemNum(menunum) OF
  122.             | 0: itemname := "Open..."
  123.            (* 1: is seperator *)
  124.             | 2: itemname := "Save"
  125.             | 3: itemname := "Save As..."
  126.            (* 4: is seperator *)
  127.             | 5: itemname := "Quit"; quit := TRUE
  128.             | 6: itemname := "About"
  129.            (* 7: is seperator *)
  130.             | 8: itemname := "Create Icons"
  131.             ELSE END
  132.  
  133.           | 1:
  134.  
  135.             menuname := "Edit";
  136.  
  137.             CASE I.ItemNum(menunum) OF
  138.             | 0: itemname := "Insert"
  139.             | 1: itemname := "Delete"
  140.             | 2: itemname := "Copy"
  141.             | 3: itemname := "Move"
  142.             | 4: itemname := "UnMark"
  143.            (* 5: is seperator *)
  144.             | 6: itemname := "Active"
  145.             ELSE END
  146.  
  147.           | 2:
  148.  
  149.             menuname := "Streß";
  150.  
  151.             itemname := "XXtes Item.";
  152.             itemname[0] := CHR(I.ItemNum(menunum) DIV 10 +ORD("0"));
  153.             itemname[1] := CHR(I.ItemNum(menunum) MOD 10 +ORD("0"));
  154.  
  155.           ELSE END;
  156.  
  157.  
  158.           D.Write(w,"Menu gewählt: ");
  159.           D.Write(w,menuname);
  160.           D.Write(w,", Item: ");
  161.           D.Write(w,itemname);
  162.           IF I.checkIt IN item.flags THEN
  163.             IF I.checked IN item.flags THEN D.Write(w," aktiviert!")
  164.                                        ELSE D.Write(w," deaktiviert!") END;
  165.           END;
  166.           D.WriteLn(w);
  167.  
  168.           menunum := item.nextSelect;
  169.  
  170.         END;
  171.  
  172.       END;
  173.  
  174.       IF I.vanillaKey IN Msg.class THEN
  175.  
  176.         CASE Msg.code OF
  177.         | ORD("q"),ORD("Q"):
  178.             D.Write(w,"Quit mit Tastatur gewählt!" ); D.WriteLn(w); quit := TRUE
  179.         | ORD("a"),ORD("A"):
  180.             D.Write(w,"About mit Tastatur gewählt!"); D.WriteLn(w);
  181.         ELSE END;
  182.  
  183.       END;
  184.  
  185.       IF I.closeWindow IN Msg.class THEN quit := TRUE END;
  186.  
  187.     END;
  188.  
  189.     D.Close(w);
  190.  
  191.   END;
  192.  
  193. END Test.
  194.  
  195.  
  196.  
  197.  
  198.